package operation;


import books.BookList;
import user.Admin;
import user.Code;
import user.NormalUser;
import user.User;

import java.util.Scanner;

/**
 * 切换用户
 * SwitchOperation 实现接口 IOPeration
 * 重写接口中的抽象方法
 */
public class SwitchOperation implements IOperation{

    @Override
    public void work(BookList bookList) {
        User user = login();            // 调用，login 获取对应 用户的向上转型，调用对应的重写

        while(true) {
            if(null !=user) {
                int choice = user.menu();
                user.doOperation(choice,bookList);
            } else {
                break;
            }

        }
    }

    private User login() {
        Scanner scanner = new Scanner(System.in);
        String name = null;
        int who = 0;

        System.out.print("请输入您的姓名:> ");
        name = scanner.nextLine();

        System.out.print("请输入您的身份登入:1.表示管理员、0.表示普通用户::> ");
        who = scanner.nextInt();

        while(who != 1 && who != 0) {
            System.out.print("选择错误,请重新选择:> ");        // 只有 1 或 0
            who = scanner.nextInt();
        }

        if(1 == who) {
            if(Code.passWord()) {    //管理员，需要密码
                return new Admin(name);
            }else{
                return null;
            }
        }

        if(0 == who) {
            return new NormalUser(name);  // 注意返回类型，父类，向上转型
        }

        return null;  // 这一步是不会执行的
    }

}


/**
 * 错误探究
 */

/*
        switch(who) {
            case 0:
                return new NormalUser(name);  // 注意返回类型，父类，向上转型
            case 1:
                if(Code.passWord()) {
                    return new Admin(name);
                }else{
                    return null;
                }
            default:
                System.out.println("选择错误,请重新选择");
                login();
                break;
        }
        */





/*

    Scanner scanner = new Scanner(System.in);
    String name = null;
    int who = 0;

        System.out.println("请输入您的姓名:");
                name = scanner.nextLine();

                System.out.println("请输入您的身份登入:1.表示管理员、0.表示普通用户");
                who = scanner.nextInt();

                while(who !=1 && who !=0) {
                System.out.println("选择错误,请重新选择");
                who = scanner.nextInt();
                }

                if(1 == who) {
                if(Code.passWord()) {
                return new Admin(name);
                }else{
                return null;
                }
                }

                if(0 == who) {
                return new NormalUser(name);  // 注意返回类型，父类，向上转型
                }





   */
/*     User user =  login();

        while(true) {
            int choice = user.menu();
            user.doOperation(choice,bookList);
        }
*//*

                return null;*/
